For many enterprise applications, finite resources must be allocated among a number of requests for such resources. In a network call routing system, for example, incoming calls must often be routed to an appropriate call center agent at one or more local or remote call centers. A call center often handles telephone calls for an enterprise. Typically, the telephone calls handled by a call center are incoming calls from present or potential customers of the enterprise. The incoming calls are generally distributed among a number of agents within the call center who are each trained to handle certain types of incoming calls. A call center will normally be capable of handling many different types of received calls. For example, a call center may receive calls relating to each of a multitude of different products, product types, or product families sold by the corresponding enterprise. Alternatively, or in addition, a call center may handle calls relating to different services or information dissemination functions provided by the enterprise. For example, the services and functions may include taking product orders, providing customer service, providing pricing and/or availability information, or any of a variety of other functions. The types of calls that are supported by a call center are commonly referred to as the “skills” of the call center. Each skill typically has an associated queue for storing received calls until an appropriate agent is available to process the call.
It is often desirable that each of the different skills (and thus queues) associated with a call center be handled differently by the call center. In other words, some of the skills may be deemed by the enterprise to be more important than other skills and hence are to be given more attention or a higher level of service by the call center. Thus, a service level target is often defined for each of the different skills of the call center to indicate a desired level of service for the skill. However, past techniques for achieving the desired service levels for each of the skills of a call center have generally been inadequate. That is, actual performance levels for the different skills have not accurately reflected the desired service level targets defined for those skills.
Generally, resource allocation systems attempt to balance the work load among the qualified resources that are available. Thus, in the context of a call center, a resource allocation system typically attempts to allocate an available agent based on the service level targets associated with the queues that the agent is qualified to service. For example, the resource allocation system may allocate the agent to service a call from a queue currently having the worst performance level. U.S. Pat. No. 6,14,903, entitled “Methods and Apparatus for Service State-Based Processing of Communications in a Call Center,” assigned to the assignee of the present invention and incorporated by reference herein, discloses techniques for determining which of a number of predefined service states is associated with a particular skill (or queue).
Many resource allocation systems make such allocation decisions based on, for example, the actual current wait time and a predicted future wait time, often referred to as a Weighted Advance Time (WAT) or Expected Wait Time (EWT). Generally, the Weighted Advance Time predicts the next time an agent will be available to service a particular queue, if the currently available agent is not assigned to this queue. The Weighted Advance Time for a given queue can be adjusted each time the number of agents associated with the queue changes, as follows:
  newWAT  =      priorWAT    ×                            prior          ⁢                                          ⁢          #          ⁢                                          ⁢          of          ⁢                                          ⁢          working          ⁢                                          ⁢          agents                          new          ⁢                                          ⁢          #          ⁢                                          ⁢          of          ⁢                                          ⁢          working          ⁢                                          ⁢          agents                    .      While this type of calculation for Weighted Advance Time dynamically adjusts to the number of agents that are available to service a queue, it suffers from one or more limitations, which if overcome, could further improve the efficiency of such resource allocation systems. In particular, this type of calculation for Weighted Advance Time assumes that every agent contributes the same amount of his or her time to servicing work from each queue. For example, U.S. Pat. No. 6,347,139, entitled “System for Automatically Routing Calls to Call Center Agents in an Agent Surplus Condition Based on Agent Occupancy,” assigned to the assignee of the present invention and incorporated by reference herein, discloses a Skill Target Level Process that adjusts the Weighted Advance Time of the queues supported by an agent in proportion to the number of queues that the agent supports.
A need therefore exists for methods and apparatus for allocating a resource to enqueued requests using a predicted wait time that is based on the prior contribution of the agent to servicing the enqueued requests.